home *** CD-ROM | disk | FTP | other *** search
- //-----------------------------------------------------------------------------
- // File: dsutil.cpp
- //
- // Desc: Routines for dealing with sounds from resources
- //
- // Copyright (C) 1995-2001 Microsoft Corporation. All Rights Reserved.
- //-----------------------------------------------------------------------------
- #ifndef DSUTIL_H
- #define DSUTIL_H
-
-
-
-
- //-----------------------------------------------------------------------------
- // Helper routines
- //-----------------------------------------------------------------------------
- HRESULT DSUtil_FillSoundBuffer( LPDIRECTSOUNDBUFFER pDSB, BYTE* pbWaveData,
- DWORD dwWaveSize );
- HRESULT DSUtil_ParseWaveResource( VOID* pvRes, WAVEFORMATEX** ppWaveHeader,
- BYTE** ppbWaveData, DWORD* pdwWaveSize );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_LoadSoundBuffer()
- // Desc: Loads an IDirectSoundBuffer from a Win32 resource in the current
- // application.
- //-----------------------------------------------------------------------------
- LPDIRECTSOUNDBUFFER DSUtil_LoadSoundBuffer( LPDIRECTSOUND* pDS,
- LPCTSTR strName );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_ReloadSoundBuffer()
- // Desc: Reloads an IDirectSoundBuffer from a Win32 resource in the current
- // application. normally used to handle a DSERR_BUFFERLOST error.
- //-----------------------------------------------------------------------------
- HRESULT DSUtil_ReloadSoundBuffer( LPDIRECTSOUNDBUFFER pDSB, LPCTSTR strName );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_GetWaveResource()
- // Desc: Finds a WAV resource in a Win32 module.
- //-----------------------------------------------------------------------------
- HRESULT DSUtil_GetWaveResource( HMODULE hModule, LPCTSTR strName,
- WAVEFORMATEX** ppWaveHeader, BYTE** ppbWaveData,
- DWORD* pdwWaveSize );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_InitDirectSound()
- // Desc:
- //-----------------------------------------------------------------------------
- HRESULT DSUtil_InitDirectSound( HWND hWnd );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_FreeDirectSound()
- // Desc:
- //-----------------------------------------------------------------------------
- VOID DSUtil_FreeDirectSound();
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: struct SoundObject
- // Desc: Used to manage individual sounds which need to be played multiple
- // times concurrently. A SoundObject represents a queue of
- // IDirectSoundBuffer objects which all refer to the same buffer memory.
- //-----------------------------------------------------------------------------
- struct SoundObject
- {
- BYTE* pbWaveData; // Ptr into wave resource (for restore)
- DWORD cbWaveSize; // Size of wave data (for restore)
- DWORD dwNumBuffers; // Number of sound buffers.
- DWORD dwCurrent; // Current sound buffer
- LPDIRECTSOUNDBUFFER* pdsbBuffers; // List of sound buffers
- };
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_CreateSound()
- // Desc: Loads a SoundObject from a Win32 resource in the current application.
- //-----------------------------------------------------------------------------
- SoundObject* DSUtil_CreateSound( LPCTSTR strName, DWORD dwNumBuffers );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_DestroySound()
- // Desc: Frees a SoundObject and releases all of its buffers.
- //-----------------------------------------------------------------------------
- VOID DSUtil_DestroySound( SoundObject* pSound );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_PlayPannedSound()
- // Desc: Play a sound, but first set the panning according to where the
- // object is on the screen. fScreenXPos is between -1.0f (left) and
- // 1.0f (right).
- //-----------------------------------------------------------------------------
- VOID DSUtil_PlayPannedSound( SoundObject* pSound, FLOAT fScreenXPos );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_PlaySound()
- // Desc: Plays a buffer in a SoundObject.
- //-----------------------------------------------------------------------------
- HRESULT DSUtil_PlaySound( SoundObject* pSound, DWORD dwPlayFlags );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_StopSound()
- // Desc: Stops one or more buffers in a SoundObject.
- //-----------------------------------------------------------------------------
- HRESULT DSUtil_StopSound( SoundObject* pSound );
-
-
-
-
- //-----------------------------------------------------------------------------
- // Name: DSUtil_GetFreeSoundBuffer()
- // Desc: Returns one of the cloned buffers that is not currently playing
- //-----------------------------------------------------------------------------
- LPDIRECTSOUNDBUFFER DSUtil_GetFreeSoundBuffer( SoundObject* pSound );
-
-
-
-
- #endif // DSUTIL_H
-
-
-
-